- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин
Шрифт:
Интервал:
Закладка:
Далее окно открывается методом open класса Shell и производится компоновка содержимого окна методом layout класса Composite (суперкласса класса Shell).
После этого в методе main организуется цикл, который прекращается при закрытии окна (!shell.isDisposed ()) и в котором UI-поток засыпает, используя метод sleep класса Display, до тех пор, пока в очереди событий не появится какое-либо событие (!display.readAndDispatch ()).
Защищенный метод checkSubclass главного класса SWT-приложения переопределяет метод суперкласса Decorations.
Система SWT позволяет расширять свои классы только в определенных узлах иерархии программного интерфейса API, таких как классы Composite и Canvas.
Метод checkSubclass контролирует это правило до тех пор, пока он не будет переопределен, поэтому в данном случае главный класс SWT-приложения вынужден переопределить этот метод, так как он расширяет класс Shell, который не предназначен для расширения.
Откроем созданный главный класс SWT-приложения в Eclipse-редакторе плагина WindowBuilder. При этом редактор будет иметь три вкладки:
Source – редактирование исходного кода.
Design – визуальный графический редактор GUI-интерфейса.
Bindings – создание и редактирование связывания данных.
Откроем вкладку Design и увидим графический редактор, состоящий из набора окон, включающего в себя область визуального редактирования, палитру компонентов Palette, представление Structure, отображающее иерархию используемых компонентов, представление Properties, отображающее свойства выбранного компонента.
Область визуального редактирования представляет холст дизайнера, который отображает интерфейс приложения в том виде, в котором он будет виден пользователю.
Данная область имеет контекстное меню, позволяющее:
Вырезать, копировать, вставлять и удалять компоненты (команды Cut, Copy, Paste, Delete),
Предварительно посмотреть конечный вид интерфейса без запуска приложения (команда Test/Preview),
Обновить область (команда Refresh),
Добавить в компонент слушателя событий (команда Add event handler),
Установить компоновку дочерних компонентов (команда Set layout),
Установить минимальные размеры компонента (команда Set minimal size),
Удалить метод setSize (команда Remove setSize ()),
Определить SWT-стиль (команда Style),
Создать связывание данных для выбранного компонента (команда Bindings),
Определить родительский контейнер для выбранного компонента (команда Surround with),
Изменить порядок дочерних компонентов в списке (команда Order),
Подогнать размеры компонента (команда Autosize control),
Выбрать компоненты (команда Select),
Создать метод, возвращающий экземпляр компонента (команда Expose component),
Превратить в другой компонент (команда Morph),
Создать класс-фабрику для выбранного компонента (команда Factory),
Переименовать компонент (команда Rename).
Окно Structure имеет контекстное меню с аналогичной функциональностью.
Палитра компонентов Palette содержит следующие разделы:
System – инструменты выбора элементов: Selection (выбор элемента с помощью курсора), Choose Component (выбор элемента с помощью мастера Open type), Marquee (выбор группы элементов), Tab Order (определение порядка выбора элементов пользователем с помощью клавиши Tab).
Composites – контейнеры пакетов org.eclipse. swt. widgets и org.eclipse.swt.custom.
Layouts – компоновки пакетов org.eclipse.swt.layout, org.eclipse.swt.custom и swing2swt.layout.
Controls – SWT-компоненты пакетов org.eclipse. swt. widgets, org.eclipse.swt.custom и org.eclipse.swt.browser.
JFace – JFace-компоненты пакетов org.eclipse.jface.viewers, org.eclipse. jface. text и org.eclipse.jface.fieldassist.
Forms API – формы и компоновки пакета org.eclipse.ui.forms. widgets.
Menu – меню пакета org.eclipse. swt. widgets.
SWT_AWT – мост между системами SWT и AWT, представленный классом SWT_AWT, и набор AWT/Swing компонентов для встраивания в SWT-приложение.
Добавление компонентов из Palette-палитры в область визуального редактирования осуществляется нажатием соответствующего компонента в окне палитры и наведении курсора мышки на требуемую позицию компонента в области визуального редактирования.
После щелчка левой кнопки мышки компонент вставляется в область визуального редактирования с генерацией необходимого исходного кода.
При добавлении компонента в Shell-окно SWT-приложения, его исходный код добавляется в конструкторе класса между вызовами суперконструктора и метода createContents.
Добавлять компоненты из Palette-палитры можно также нажав соответствующий компонент в окне палитры, наведя курсор мышки на желаемый родительский компонент в окне Structure и щелкнув левой кнопкой мышки.
Окно Palette-палитры имеет контекстное меню, обеспечивающее добавление раздела и компонента в палитру, добавление класса-фабрики, импорт JAR-файла компонента, редактирование элемента палитры, удаление компонента из палитры, восстановление палитры по умолчанию, открытие мастера Palette Manager, импорт и экспорт палитры в XML-формате, общие настройки палитры.
Palette-палитру можно открыть в отдельном представлении с помощью выбора команды Show View | Other | WindowBuilder | Palette меню Window.
Графический редактор WindowBuilder-плагина имеет панель инструментов, дающую возможность предварительно посмотреть конечный вид интерфейса пользователя без запуска приложения, разобрать исходный код и обновить область визуального редактирования, отменить сделанные изменения, вырезать, копировать, вставлять и удалять компоненты, настроить выбранную компоновку и интернационализировать приложение.
Контейнеры раздела Composites Palette-палитры предназначены для объединения группы компонентов с применением к ним общей компоновки.
Базовым классом контейнеров раздела Composites Palette-палитры является класс Composite, который сам может служить контейнером для компонентов.
Раздел Composites Palette-палитры также содержит такие контейнеры как CBanner, CTabFolder, Group, SashForm, ScrolledComposite, TabFolder и ViewForm.
Метод setBackground, унаследованный классом Composite от класса Control, позволяет определить общий фон для группы компонентов.
Установить цвет фона, а также другие свойства Composite-компонента, такие как имя экземпляра класса, стиль, размеры, компоновку, связывание свойств, включение и выключение, шрифт, цвет переднего плана, порядок табуляции и текст подсказки можно в окне Properties вкладки Design.
Контейнер Group отличается от контейнера Composite отображением своих границ и возможностью определения заголовка.
Контейнер ScrolledComposite отображает свои границы и обеспечивает полосы прокрутки.
Контейнер SashForm группирует свои дочерние элементы в строки или столбцы, разделяя их полосой Sash.
Контейнер TabFolder представляет панель с вкладками, где вкладки представлены классом TabItem. Для вкладки TabItem можно определить заголовок и значок.
Контейнер CTabFolder также представляет панель с вкладками, где вкладки представлены классом CTabItem.
Отличие контейнера CTabFolder от контейнера TabFolder заключается в том, что для контейнера CTabFolder можно регулировать видимость границ, вертикальные и горизонтальные отступы, снабжать панель кнопками «свернуть» и «развернуть», регулировать подсветку выбранной вкладки, форму и расположение вкладки.
Вкладка CTabItem отличается от вкладки TabItem тем, что вкладку CTabItem можно обеспечить кнопкой «закрыть».
Контейнер ViewForm отличается от контейнера Composite возможностью регулировки отступов, видимости границ и размещения компонентов в верхней части по центру, справа и слева.
Контейнер ViewForm используется в Workbench-окне для компоновки метки, меню и панели инструментов представления.
Контейнер CBanner делит свое содержимое на три части – справа, слева и низ, в которых можно размещать компоненты.
Компоновки раздела Layouts Palette-палитры обеспечивают компоновку дочерних компонентов контейнера различным способом.
Определить компоновку для контейнера во вкладке Design WindowBuilder-редактора можно либо с помощью команды Set layout контекстного меню области визуального редактирования, либо в поле Layout окна Properties.
Базовым классом компоновок раздела Layouts служит класс Layout.
Раздел Layouts Palette-палитры предоставляет такие компоновки как Absolute layout, FillLayout, GridLayout, FormLayout, RowLayout, StackLayout, FlowLayout, BoxLayout, BorderLayout.
Компоновка Absolute layout – это нулевая компоновка setLayout (null), в которой координаты дочерних компонентов определяются аргументами метода setBounds суперкласса Control.
Компоновка FillLayout размещает компоненты в строку или столбец, подгоняя их к одному размеру, и имеет регулировки отступов и типа (горизонтальный или вертикальный).
Компоновка GridLayout представляет сетку ячеек для компоновки компонентов и имеет регулировки отступов и числа столбцов ячеек.
Размеры компонента, его выравнивание, а также количество ячеек строки и столбца, которые занимает компонент, могут быть установлены путем вызова метода setLayoutData суперкласса Control с аргументом – объектом GridData.
Компоновка FormLayout размещает компоненты с помощью

